
CREATE TABLE customer_info (
  customer_id    STRING COMMENT '客户唯一ID（主键）',
  name           STRING COMMENT '客户姓名',
  id_card_no     STRING COMMENT '身份证号（唯一约束）',
  phone          STRING COMMENT '联系电话',
  address        STRING COMMENT '联系地址',
  create_time    STRING COMMENT '创建时间（格式：yyyy-MM-dd HH:mm:ss）',
  update_time    STRING COMMENT '最后更新时间（格式同上）'
)
PARTITIONED BY (dt STRING COMMENT 'COB日期分区 yyyyMMdd')
STORED AS ORC;


CREATE TABLE account_info (
  account_no      STRING COMMENT '账户号（主键）',
  customer_id     STRING COMMENT '客户ID（外键 -> customer_info.customer_id）',
  account_type    STRING COMMENT '账户类型（储蓄/对公）',
  balance         STRING COMMENT '当前余额（格式：整数部分18位，小数2位）',
  open_date       STRING COMMENT '开户日期（格式：yyyy-MM-dd）',
  status          STRING COMMENT '账户状态（正常/冻结）',
  last_updated_time STRING COMMENT '最后更新时间（格式：yyyy-MM-dd HH:mm:ss）'
)
PARTITIONED BY (dt STRING)
STORED AS ORC;

CREATE TABLE transaction_flow (
  transaction_id     STRING COMMENT '交易唯一ID（主键）',
  account_no         STRING COMMENT '账户号（外键 -> account_info.account_no）',
  transaction_code   STRING COMMENT '交易类型编码（外键 -> transaction_reference.transaction_code）',
  amount             STRING COMMENT '交易金额（格式：整数部分18位，小数2位）',
  currency           STRING COMMENT '币种（如CNY/USD）',
  counterparty_account STRING COMMENT '对手账户（外键 -> account_info.account_no）',
  transaction_time   STRING COMMENT '交易时间（格式：yyyy-MM-dd HH:mm:ss）',
  status             STRING COMMENT '交易状态（成功/失败）',
  channel            STRING COMMENT '交易渠道（ATM/网银）'
)
PARTITIONED BY (dt STRING)
STORED AS ORC;

CREATE TABLE transaction_reference (
  transaction_code STRING COMMENT '交易类型编码（主键，如T001）',
  description      STRING COMMENT '交易描述（如转账/消费）',
  category         STRING COMMENT '交易大类（收入/支出）'
)
PARTITIONED BY (dt STRING)
STORED AS ORC;

CREATE TABLE transaction_log (
  log_id           STRING COMMENT '日志ID（主键）',
  transaction_id   STRING COMMENT '交易ID（外键 -> transaction_flow.transaction_id）',
  log_level        STRING COMMENT '日志级别（INFO/ERROR）',
  log_message      STRING COMMENT '日志内容（JSON格式）',
  log_time         STRING COMMENT '日志时间（格式：yyyy-MM-dd HH:mm:ss）'
)
PARTITIONED BY (dt STRING)
STORED AS ORC;